A storage server is a computer system that is used to store and retrieve data on behalf of one or more clients on a network. A storage server operates on behalf of one or more clients to store and manage data in a set of mass storage devices, such as magnetic or optical storage-based disks or tapes. The resources of a storage server such as storage and access bandwidth are limited. There may be applications within the storage server that generate large workloads, making many access requests to the network. One way to improve resource use in a storage server is to provide caching in the form of buffer cache, recognizing that data accessed in a workload has a greater likelihood of being accessed again relative to other data stored in the data center. As a result, buffers in the buffer cache that are not expected to be needed soon are periodically scavenged to make space for newly accessed buffers, i.e. items are cleaned from the cache.
In a standard system configuration, the cache scavenger periodically cleans items from the cache. If an item is added to the cache and the cache is near full, the item is added to the cache and the cache scavenger is scheduled. The cache scavenger attempts to accumulate a free pool of resources of a particular size and will continue scavenging buffers until the pool reaches this thresfhold. In general, the scavenger is scheduled when the free pool shrinks below a minimum threshold. In a system where multiple client workloads access a buffer cache, scavenging based on buffer age alone can lead to degraded service for some users when there are other users that have a much higher buffer access rate. This situation can lead to unfair scavenging of the slower users.
Prior attempts to obviate the enumerated drawbacks include physically partitioning client workloads within the buffer cache. However, physically partitioning a buffer cache limits workloads to preset allocations, and does not provide flexibility in actual work performance.
The present disclosure is susceptible to various modifications and alternative forms, and some representative embodiments have been shown by way of example in the drawings and will be described in detail herein. It should be understood, however, that the inventive aspects are not limited to the particular forms illustrated in the drawings. Rather, the disclosure is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the disclosure as defined by the appended claims.